package cn.lxycx.dataterrace.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import lxycx.util.http.RequestPro;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.log4j.Logger;

/**
 * 客服消息
 * @author RUNTIME
 * 时间：2018年3月14日
 */
public class ServiceMsg {
	private static Logger log = Logger.getLogger(ServiceMsg.class);


	/**
	 * 发送客服消息
	 */
	public static boolean send(String token,String body) {
		log.info("发送客服消息："+body);
		try {
			String res = RequestPro.submit("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+token, body, null);
			log.info("发送结果："+res);
			
			JSONObject json = JSONObject.fromObject(res);
			if(json.containsKey("errcode")&&json.getInt("errcode")==0){
				return true;//发送成功
			}
		}catch (IOException e) {
			e.printStackTrace();
		}
		return false;
	}
	
	
	/**普通消息转换工具类*/
	public static String toSimplJson(String openid, SimplMsg msg) {
		JSONObject json = new JSONObject();
		json.put("touser", openid);
		json.put("msgtype", msg.getMsgtype());
		json.put(msg.getMsgtype(), JSONObject.fromObject(msg.getData()));
		return json.toString();
	}
	/**多图文消息转换工具类*/
	public static String toNewsJson(String openid, NewsMsg msg){
		JSONObject j = new JSONObject();
		j.put("articles", JSONArray.fromObject(msg.getData()));
		
		JSONObject json = new JSONObject();
		json.put("touser", openid);
		json.put("msgtype", msg.getMsgtype());
		json.put(msg.getMsgtype(), j);
		return json.toString();
	}

	
	
	/**
	 * 简单的客服消息类
	 * @author RUNTIME
	 * 时间：2018年3月14日
	 */
	public static class SimplMsg{
		private String msgtype;
		private Map<String,String> data = new HashMap<String,String>();
		
		public Map<String,String> getData(){
			return data;
		}

		public String getMsgtype() {
			return msgtype;
		}
		
		/**
		 * 实例化指定类型的消息
		 * */
		public SimplMsg(String msgtype){
			this.msgtype = msgtype;
		}
		
		/**
		 * 添加消息内容
		 */
		public SimplMsg addData(String key,String value){
			data.put(key, value);
			return this;
		}

	}
	
	
	/**
	 * 多图文客服消息类
	 * @author RUNTIME
	 * 时间：2018年3月14日
	 */
	public static class NewsMsg{
		private String msgtype;
		private List<Map<String,String>> data = new ArrayList<Map<String,String>>();
		
		public List<Map<String,String>> getData(){
			return data;
		}

		public String getMsgtype() {
			return msgtype;
		}
		
		/**
		 * 实例化指定类型的消息
		 * */
		public NewsMsg(){
			this.msgtype = "news";
		}
		
		/**
		 * 添加消息内容
		 */
		public NewsMsg addData(Map<String,String> map){
			data.add(map);
			return this;
		}

	}

}
